Computer operating systems perform a number of functions, including serving as a bridge between computer hardware and computer applications that run on the operating systems. Modern computer operating systems also provide basic graphical user interfaces (GUIs) by which users can interact with components of the operating system in more intuitive manners. For example, an operating system may define basic graphical building blocks that applications can access so that they can generate advanced and consistent user interfaces relatively easily.
The various objects that are part of a GUI may be segregated into various display layers, with some layers appearing in front of other layers. For example, when a user launches an application from a home screen including icons, the window for the application may become active, and move visually in front of other objects that were previously displayed on a home screen. The home screen, as well as a number of applications, may include back-most layer that fills substantially all of the display and acts as a background, or as wallpaper when the background is formed from a graphical image. Icons that can be selected by a user to launch or maximize applications may be displayed on a visual layer in front of the background but behind any open applications. Certain layers may be rendered into one or more off-screen buffers before they are displayed, e.g., to permit a system to add effects to displayed elements and/or to permit performance improvements.
Some of the visual layers, such as a visual layer that displays icons in front of the background, may include areas of transparent pixels that allow portions of the layers behind them to be visible. These transparent pixels represent parts of the layer that do not include any visual image and therefore should not obstruct the display of images from other layers, whether in front of or behind the layer. These transparent pixels therefore provide no additional data for rendering the screen image, but essentially represent “null” data for certain pixels of the layer.
Nonetheless, when each layer of the GUI is rendered, each of these transparent pixels is processed as part of processing the layer. For mobile devices and other situation with resource constraints on graphics processing, the number of pixels per second or per cycle that can be processed, the fillrate, can be a hard constraint on the speed of the system. Thus, large areas of transparent pixels in a layer can slow the rendering of the resource, increasing the amount of time it takes to render a full frame of the display (and correspondingly decreasing the frame rate).